#!/bin/bash

# Slackware build script for kegs

# Written by B. Watson (urchlay@slackware.uk)

# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.

# 20210825 bkw: update for v1.12.
# - upstream got rid of to_pro and partls, so their man pages are
#   also gone now.

# 20210225 bkw: update for v1.05. lots of changes:
# - include the ROM image in the package (add it to DOWNLOAD)
# - allow_sound_open_fail.diff no longer required
# - rework allow_window_close.diff for v1.05
# - .desktop file no longer needs Terminal=true
# - upstream now supports pulseaudio, so build with it by default. add
#   AUDIO variable to build the old OSS sound support or ALSA via aoss
#   instead.

# 20170305 bkw:
# - fix building under installwatch, caused by a symlink in the
#   tarball being listed before its target. Why does this choke
#   under installwatch and not otherwise? Not bumping BUILD for this.

# 20150621 bkw: bump BUILD to 2
# - fix link to GS/OS images in README
# - split up huge README, move most of it to README.Slackware
# - add allow_sound_open_fail.diff
# - add instructions on getting OSS audio to work on modern Slack
# - "Exec=aoss xkegs" in .desktop file

cd $(dirname $0) ; CWD=$(pwd)

PRGNAM=kegs
VERSION=${VERSION:-1.12}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}

if [ -z "$ARCH" ]; then
  case "$( uname -m )" in
    i?86) ARCH=i586 ;;
    arm*) ARCH=arm ;;
       *) ARCH=$( uname -m ) ;;
  esac
fi

if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
  echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
  exit 0
fi

TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}

if [ "$ARCH" = "i586" ]; then
  SLKCFLAGS="-O2 -march=i586 -mtune=i686"
elif [ "$ARCH" = "i686" ]; then
  SLKCFLAGS="-O2 -march=i686 -mtune=i686"
elif [ "$ARCH" = "x86_64" ]; then
  SLKCFLAGS="-O2 -fPIC"
else
  SLKCFLAGS="-O2"
fi

set -e

AUDIO=${AUDIO:-pulse}
VARS=$CWD/makevars/vars.$AUDIO

if [ ! -e $VARS ]; then
  echo -n "*** AUDIO=\"$AUDIO\" not supported. Use one of: " 1>&2
  list="$( ls -1 $CWD/makevars/vars.* | cut -d. -f2 )"
  echo $list 1>&2
  exit 1
fi

rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM.$VERSION
tar xvf $CWD/$PRGNAM.$VERSION.tar.gz \
  --exclude '*/KEGSMAC.app' \
  --exclude '*/xkegs'
cd $PRGNAM.$VERSION
chown -R root:root .
find -L .  -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
        \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+

# device name for joysticks has changed for the 21st century.
sed -i 's,/dev/js,/dev/input/js,' src/joystick_driver.c

# xkegs refuses to close (close button greyed-out by window manager).
# Small patch by SlackBuild author fixes this large annoyance (which is
# extra-annoying because there's also no Quit option in the kegs menu).
# I've sent this upstream, maybe it'll get integrated in future versions.
# 20210225 bkw: Years later. Patch had to change for 1.05. The README
# for kegs *actually says* you can close the main KEGS window to quit,
# *and you can't fucking close it* without this patch. Apologies if I
# sound a bit strident, but...
patch -p1 < $CWD/allow_window_close.diff

cd src
rm -f vars
cat $VARS > vars
make SLKCFLAGS="$SLKCFLAGS" x$PRGNAM
cd -

# No install target, just stick it all where it goes.
mkdir -p \
  $PKG/usr/bin \
  $PKG/usr/libexec \
  $PKG/usr/share/pixmaps \
  $PKG/usr/share/applications \
  $PKG/usr/share/$PRGNAM \
  $PKG/usr/man/man1
install -s -m0755 x$PRGNAM $PKG/usr/libexec/
install -m0755 $CWD/x$PRGNAM.sh $PKG/usr/bin/x$PRGNAM
install -m0644 $CWD/$PRGNAM.desktop $PKG/usr/share/applications/
install -m0644 $CWD/config.$PRGNAM.default $PKG/usr/share/$PRGNAM

# The icons were converted from the Mac OSX icon with icns2png.
for i in 16 32 48 128; do
  idir=$PKG/usr/share/icons/hicolor/${i}x${i}/apps
  mkdir -p $idir
  cat $CWD/icons/$i.png > $idir/$PRGNAM.png
done

# old-style icon (e.g. windowmaker, fvwm2)
ln -s ../icons/hicolor/48x48/apps/$PRGNAM.png $PKG/usr/share/pixmaps/$PRGNAM.png

# Include the ROM image in the package. It's been available on the
# asimov site for at least 20 years now, Apple has never complained.
unzip -p $CWD/gsrom03.zip > $PKG/usr/share/$PRGNAM/rom03

# 20210825 bkw: include the bundled disk images in the package.
cp -a [A-Z]*.gz $PKG/usr/share/$PRGNAM/

# Man pages are specific to the SlackBuild, though I've sent
# them upstream for consideration.
for file in $CWD/man/*.1; do
  sed "s/@VERSION@/$VERSION/g" $file \
  | gzip -9c \
  > $PKG/usr/man/man1/$( basename $file ).gz
done

# Half the supplied documentation refers to it as "kegs" and
# the other half calls it "xkegs". To avoid confusion:
ln -s x$PRGNAM.1.gz $PKG/usr/man/man1/$PRGNAM.1.gz
ln -s x$PRGNAM $PKG/usr/bin/$PRGNAM

mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
install -m0644 *.txt $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild

mkdir -p $PKG/install
sed "s,@AUDIO@,$AUDIO," $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh

cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
